"""

InitializeOrder.py
Author: Ryan Walters
Date: 10/12/2008

This class is responsible for defining what order the execution
of initialization during a new game is.  Long story short, this
is an example of the TemplateMethod pattern's abstract class.

$Id: InitializeOrder.py 339 2008-10-17 03:57:13Z malerba89 $
"""

class InitializeOrder(object):

##   The system shall follow a prescribed set of steps to initiate a game.
##
##   1. The combination of players is selected.
##   2. The codemaker player is initialized.
##   3. The codebreaker player is intialized.
##   4. The codemaker indicates that the secret code is selected.
##   5. Play transfers to alternating moves of the codebreaker
##   and codemaker until one of the players wins the game, or requests a new game. 
    def executionOrder(self):
        setMakerPlayer(0);
        setBreakerPlayer();
        setStartingCode(startGame);

    def displayNewGameInput(self):
        """Tell the command to execute itself"""
        raise NotImplementedError('method not implemented')

    def setMakerPlayer(self, player):
        """Initializes the Maker player"""
        raise NotImplementedError('method not implemented')

    def setBreakerPlayer(self, player):
        """Initializes the Breaker player"""
        raise NotImplementedError('method not implemented')

    def setStartingCode(self):
        """Tell the maker to make the code"""
        raise NotImplementedError('method not implemented')

    def startGame(self):
        """Begin the game"""
        raise NotImplementedError('method not implemented')





